// 测试数据脚本
// 用于创建包含视频的候选人测试数据

const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

async function createTestData() {
  try {
    console.log('开始创建测试数据...')

    // 测试候选人数据
    const testCandidates = [
      {
        name: '测试候选人A',
        description: '这是一个测试候选人，用于验证视频播放功能。该候选人有完整的图片和视频资料。',
        images: [
          'https://via.placeholder.com/400x300/FF6B6B/FFFFFF?text=Image+1',
          'https://via.placeholder.com/400x300/4ECDC4/FFFFFF?text=Image+2'
        ],
        videoUrl: 'https://www.w3schools.com/html/mov_bbb.mp4', // 使用公开的测试视频
        videoPoster: 'https://via.placeholder.com/400x300/45B7D1/FFFFFF?text=Video+Poster',
        extraInfo: '联系方式：test@example.com',
        activityId: 'test-activity-1',
        votes: 15,
        ranking: 1,
        createdBy: 'test-user',
        createdAt: new Date(),
        updatedAt: new Date(),
        status: 'active'
      },
      {
        name: '测试候选人B',
        description: '另一个测试候选人，主要用于测试没有视频时的显示效果。',
        images: [
          'https://via.placeholder.com/400x300/95E1D3/FFFFFF?text=Image+B'
        ],
        videoUrl: '',
        videoPoster: '',
        extraInfo: '团队成员：张三、李四',
        activityId: 'test-activity-1',
        votes: 8,
        ranking: 2,
        createdBy: 'test-user',
        createdAt: new Date(),
        updatedAt: new Date(),
        status: 'active'
      },
      {
        name: '测试候选人C',
        description: '第三个测试候选人，包含视频但没有封面图。使用另一个测试视频文件。',
        images: [
          'https://via.placeholder.com/400x300/F8B500/FFFFFF?text=Image+C'
        ],
        videoUrl: 'https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_1mb.mp4',
        videoPoster: '',
        extraInfo: '特殊说明：此候选人视频无封面',
        activityId: 'test-activity-1',
        votes: 23,
        ranking: 0,
        createdBy: 'test-user',
        createdAt: new Date(),
        updatedAt: new Date(),
        status: 'active'
      },
      {
        name: '测试候选人D',
        description: '第四个测试候选人，用于测试小文件视频播放。',
        images: [
          'https://via.placeholder.com/400x300/E74C3C/FFFFFF?text=Image+D'
        ],
        videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
        videoPoster: 'https://via.placeholder.com/400x300/8E44AD/FFFFFF?text=Video+D+Poster',
        extraInfo: '视频格式：MP4 H.264',
        activityId: 'test-activity-1',
        votes: 12,
        ranking: 3,
        createdBy: 'test-user',
        createdAt: new Date(),
        updatedAt: new Date(),
        status: 'active'
      }
    ]

    // 清除现有测试数据
    try {
      await db.collection('candidates').where({
        activityId: 'test-activity-1'
      }).remove()
      console.log('清除旧测试数据完成')
    } catch (e) {
      console.log('清除旧数据时出错（可能没有旧数据）:', e.message)
    }

    // 批量插入测试数据
    const insertPromises = testCandidates.map(candidate => 
      db.collection('candidates').add({
        data: candidate
      })
    )
    
    const results = await Promise.all(insertPromises)
    
    results.forEach((result, index) => {
      console.log(`创建候选人 "${testCandidates[index].name}" 成功，ID: ${result._id}`)
    })

    console.log('测试数据创建完成！')
    
    return {
      success: true,
      message: '测试数据创建完成',
      count: testCandidates.length,
      candidates: results.map((result, index) => ({
        id: result._id,
        name: testCandidates[index].name,
        videoUrl: testCandidates[index].videoUrl
      }))
    }
  } catch (error) {
    console.error('创建测试数据失败:', error)
    return {
      success: false,
      message: '创建测试数据失败',
      error: error.message
    }
  }
}

// 清理测试数据
async function cleanTestData() {
  try {
    console.log('开始清理测试数据...')
    
    const result = await db.collection('candidates').where({
      activityId: 'test-activity-1'
    }).remove()
    
    console.log(`清理了 ${result.stats.removed} 条测试数据`)
    
    return {
      success: true,
      message: '测试数据清理完成',
      removed: result.stats.removed
    }
  } catch (error) {
    console.error('清理测试数据失败:', error)
    return {
      success: false,
      message: '清理测试数据失败',
      error: error.message
    }
  }
}

// 导出函数
module.exports = {
  createTestData,
  cleanTestData
}

// 如果直接运行此脚本，则执行创建测试数据
if (require.main === module) {
  createTestData().then(result => {
    console.log('创建结果:', result)
  })
} 